package main

import (
	"fmt"
	"strconv"
)

func main() {
	c := make(chan int, 3)
	s := make([]string, 6)
	var num int = 0
	
	go func() {
		for i := 0; i < 4; i++ {
			c <- i
			num++
			v := "inner=>" + strconv.Itoa(num)
			s = append(s, v)
		}
	}()
	
	for i := 0; i < 4; i++ {
		<-c  //这一行和下一行 结果不同 //一个为nil的channel将不会执行  buffered channel 不会阻塞
		//println("get channel  ",<-c) //这一行和上一行结果不同 因为他效率太低了 导致上面的go程全都成功执行了
		num++
		v := "outer=>" + strconv.Itoa(num)
		s = append(s, v)
	}
	
	fmt.Println(s)
}
